package com.liezh.prototype;

/**
 * 原型模式，主要是为了方便创建复杂对象，复用已存在的元对象，并以这个为模板克隆一份新的使用。
 * 好处是简化了复杂对象的创建过程，简化复杂对象的创建，对客户端屏蔽创建过程。
 *
 * 使用Object.clone()是深拷贝；
 * 如果不需要字节流层面来拷贝，只需要把需要的属性进行拷贝即可，这就是浅拷贝；
 * 使用深拷贝性能会比浅拷贝低点，但是拷贝时元对象的在系统里的状态都会一并保留到新对象。
 * @author liezh
 * @date 2021-9-1
 */
public class Client {
    public static void main(String[] args) {
        try {
            final IPrototype ebook = SrcFactory.getInstance("Ebook");
            final IPrototype movie = SrcFactory.getInstance("Movie");
            ebook.toString();
            movie.toString();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}
